Streaming is a technique of delivering data corresponding to media content to end-users and typically involves continuously playing media content as the media data is being streamed or delivered to the end user. The streamed content can correspond to video and/or audio, and an end user may watch the streamed content, for instance, on a television monitor connected to an IP client set-top box as well as other client devices such as tablets, smart-phones, personal and lap-top computers, and like electronic devices having or connected to display screens and/or audio speakers.
Hypertext Transfer Protocol (HTTP) Live Streaming (HLS), Dynamic Adaptive Streaming over HTTP (MPEG DASH), Smooth Streaming (SS), and HTTP-based Dynamic Streaming (HDS) provide examples of techniques for streaming content using HTTP. Incoming media data from a source is segmented or “chunked” into multiple separate media files which are stored on a server. A playlist file or manifest is created that includes Uniform Resource Identifiers (URIs) that direct client devices to the address or location of the media segments or files on the server. When the segmented media files are downloaded by a client device, the media files can be reassembled and played one-by-one by the client device in accordance with order specified in the playlist or manifest file. Thus, the user of the client device can be provided with continuous and uninterrupted playing of the media content while the client device continues to download and reassemble additional chunks or segments of the stream.
Adaptive streaming involves producing several instances of the same source media file and making the files containing identical content available to various different types of client devices depending upon their delivery bandwidth, CPU processing power, or the like. For instance, by monitoring CPU utilization and/or buffer status, adaptive streaming technologies can change streams when necessary to ensure continuous playback and to otherwise improve the viewing experience. Thus, HTTP-based adaptive streaming technologies use a combination of encoded media files and manifest or playlist files that identify alternative streams of identical content and their respective URLs. Client devices monitor buffer status and/or CPU utilization and change streams as necessary by locating an alternate stream of the same content from the URLs specified in the manifest or playlist file.